package org.ueg.pdv.view;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import org.ueg.pdv.business.BProduto;
import org.ueg.pdv.business.BVenda;
import org.ueg.pdv.model.Produto;
import org.ueg.pdv.model.Venda;

@ManagedBean
@ViewScoped
public class VendaBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@ManagedProperty(value="#{bVenda}")
	private BVenda bVenda;
	private Venda venda;
	private List<Venda> vendas;
	private List<Produto> produtos;
	@ManagedProperty(value="#{bProduto}")
	private BProduto bProduto;
	
	public BVenda getbVenda() {
		return bVenda;
	}

	public void setbVenda(BVenda bVenda) {
		this.bVenda = bVenda;
	}

	public Venda getVenda() {
		return venda;
	}

	public void setVenda(Venda venda) {
		this.venda = venda;
	}

	public List<Venda> getVendas() {
		return vendas;
	}

	public void setVendas(List<Venda> vendas) {
		this.vendas = vendas;
	}

	public List<Produto> getProdutos() {
		return produtos;
	}

	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}

	public BProduto getbProduto() {
		return bProduto;
	}

	public void setbProduto(BProduto bProduto) {
		this.bProduto = bProduto;
	}

	@PostConstruct
	public void doInit(){
		venda = new Venda();
		try {
			vendas = bVenda.listagem();
			produtos = bProduto.listagem();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void salva(){
		try {
			bVenda.salva(venda);
			vendas = bVenda.listagem();
			venda = new Venda();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			addMessage("messages", "", e.getMessage(), FacesMessage.SEVERITY_ERROR);
		}
	}
	
	public void altera(Venda venda){
		this.venda = venda;
	}
	
	public void exclui(Venda venda){
		try {
			bVenda.deleta(venda);
			vendas.remove(venda);
			if (venda == this.venda)
				this.venda = new Venda();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			addMessage("messages", "", e.getMessage(), FacesMessage.SEVERITY_ERROR);
		}
	}
	
	
	public void addMessage(String arg0, String summary, String detail, FacesMessage.Severity severity) {
		FacesMessage facesMessage = new FacesMessage(severity, summary, detail);
		FacesContext.getCurrentInstance().addMessage(arg0, facesMessage);
    }
}